#include <stdio.h>
#include <string.h> // 包含字符串操作函数

int main()
{
    // 基本数据类型
    int a = 4;                  // 整形
    char str1[] = "我是字符串"; // 字符串
    printf("%d\n%s\n", a, str1);
    char str2 = 's'; // 字符
    printf("%c\n", str2);
    char str3[26] = "我只能输入9个字符"; // 汉字占3个字节,数字占1个字节，字符串是以空字符 "\0"结尾的，所以还要多占1个字节，总共26个字节
    printf("%s\n", str3);
    // 浮点型
    float f1 = 3.146;
    printf("%.f\n", f1);
    printf("%f\n", f1); // 默认输出6位小数,精度值6
    printf("%.1f\n", f1);
    printf("%.2f\n", f1); // 四舍五入
    printf("%.3f\n", f1);
    // 双精度浮点型f
    double d1 = 5.66;
    printf("%g\n", d1);
    printf("%G\n", d1);
    printf("%e\n", d1);
    printf("%E\n", d1);
    printf("%f\n", d1);   // 默认输出6位小数
    printf("%.1f\n", d1); // 四舍五入
    printf("%.2f\n", d1);
    printf("%.3f\n", d1);
    // 数组类型
    //  1.字符数组
    char arr1[] = "我是字符数组噢~";
    int arr2[] = {1, 2, 3, 4, 5};
    int size = sizeof(arr2) / sizeof(arr2[0]); // 数组的元素个数
    printf("%s\n", arr1);
    printf("%zu\n", sizeof(arr2));  // sizeof(arr2) 返回的是size_t类型
    printf("%zu", sizeof(arr2[0])); // int类型占用四个字节，所以 sizeof(arr2[0]) 会返回 4
    for (int i = 0; i < size; i++)
    {
        printf("%d\n", arr2[i]);
    }
    // 结构体
    // 1.定义结构体
    struct Student
    {
        int id;
        char name[20];
    };
    // 2.创建结构体变量
    struct Student student1;
    student1.id = 101;
    strcpy(student1.name, "张三");
    printf("id:%d\n姓名:%s\n", student1.id, student1.name);
    // long
    long l1 = 1000L; // L可加可不加
    printf("l1: %ld\n", l1);
    return 0;
}